#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
脑电数据记录器使用示例

本文件展示如何使用EEGDataLogger类来记录NeuroSky MindWave设备的脑电数据。
包含基本使用方法和自定义配置示例。

使用方法：
1. 确保NeuroSky设备已连接到COM5端口
2. 运行此脚本开始数据记录
3. 按Ctrl+C停止记录
"""

import sys
import os
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'eeg'))
from eeg_data_logger import EEGDataLogger
import time

def basic_usage():
    """基本使用示例"""
    print("=== 脑电数据记录器基本使用示例 ===")
    
    # 使用默认设置创建记录器
    logger = EEGDataLogger()
    
    # 开始记录数据
    logger.start_logging()

def custom_usage():
    """自定义配置示例"""
    print("=== 脑电数据记录器自定义配置示例 ===")
    
    # 自定义串口、波特率和日志文件名
    custom_logger = EEGDataLogger(
        port="COM5",  # 串口号
        baudrate=57600,  # 波特率
        log_file="my_eeg_data.csv"  # 自定义日志文件名
    )
    
    # 开始记录数据
    custom_logger.start_logging()

def timed_recording():
    """定时记录示例（记录指定时间后自动停止）"""
    print("=== 定时记录示例（60秒后自动停止） ===")
    
    logger = EEGDataLogger(log_file="timed_eeg_data.csv")
    
    try:
        # 初始化设备
        import sys
        import os
        sys.path.append(os.path.dirname(os.path.abspath(__file__)))
        from NeuroPy3 import NeuroPy
        logger.neuropy = NeuroPy(logger.port, logger.baudrate)
        
        # 设置回调函数
        logger.neuropy.setCallBack("attention", logger.attention_callback)
        logger.neuropy.setCallBack("meditation", logger.meditation_callback)
        logger.neuropy.setCallBack("rawValue", logger.raw_value_callback)
        logger.neuropy.setCallBack("delta", logger.delta_callback)
        logger.neuropy.setCallBack("theta", logger.theta_callback)
        logger.neuropy.setCallBack("lowAlpha", logger.low_alpha_callback)
        logger.neuropy.setCallBack("highAlpha", logger.high_alpha_callback)
        logger.neuropy.setCallBack("lowBeta", logger.low_beta_callback)
        logger.neuropy.setCallBack("highBeta", logger.high_beta_callback)
        logger.neuropy.setCallBack("lowGamma", logger.low_gamma_callback)
        logger.neuropy.setCallBack("midGamma", logger.mid_gamma_callback)
        logger.neuropy.setCallBack("poorSignal", logger.poor_signal_callback)
        logger.neuropy.setCallBack("blinkStrength", logger.blink_strength_callback)
        
        # 开始记录
        logger.is_logging = True
        logger.neuropy.start()
        
        print("开始60秒定时记录...")
        
        # 记录60秒
        time.sleep(60)
        
        # 停止记录
        logger.stop_logging()
        print("定时记录完成！")
        
    except Exception as e:
        print(f"记录过程中出现错误: {e}")
        logger.stop_logging()

def main():
    """主函数 - 选择运行模式"""
    print("请选择运行模式:")
    print("1. 基本使用（默认设置）")
    print("2. 自定义配置")
    print("3. 定时记录（60秒）")
    
    try:
        choice = input("请输入选择 (1-3): ").strip()
        
        if choice == "1":
            basic_usage()
        elif choice == "2":
            custom_usage()
        elif choice == "3":
            timed_recording()
        else:
            print("无效选择，使用默认模式")
            basic_usage()
            
    except KeyboardInterrupt:
        print("\n程序被用户中断")
    except Exception as e:
        print(f"程序运行出错: {e}")

if __name__ == "__main__":
    main()